<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 执行器函数（excutor函数） -  ()=>{}
        // 2. promise的excutor函数是同步回调
        let p = new Promise((resolve,reject)=>{
            // 异步代码... - 大部分都是异步代码
            // setTimeout
            // ajax

            // 3. promise的excutor函数内调用resolve函数后
            // 3.1 状态 pending => fulfilled（成功）
            // 3.2 结果值 => resolve内参数
            // resolve('123');

             // 4. promise的excutor函数内调用reject函数后
            // 4.1 状态 pending => rejected（失败）
            // 4.2 结果值 => rejected内参数
            // reject('error')

            // 6. excutor函数内有异常，那么状态被更改为rejected,值为异常信息
            // 6.1 出现异常，
            // 6.2 抛出错误对象
            // 6.3 抛出字符串
            // throw 'ok';
            // throw new Error('错误对象')
            // throw [1,2,3];

            console.log('first');

            // 5. 状态只能修改一次
            // 5.1 以第一次修改状态为准
            throw '错误'
            // resolve('ok');
            // reject('error');

            console.log("excutor");
        });

        console.log(p);

        // 1.  promise实例初始状态为 pending，初始值为undefined
        // 1.1 PromiseState 状态
        // 1.2 PromiseResult 结果值

        console.log("end");


        p.then(val=>{
            console.log('成功',val);
        },rea=>{
            console.log('失败',rea);
        })
       

    //    p.catch(val=>{
    //        console.log(val);
    //    })

       
       

        
        


    </script>
</body>

</html>